using System;
using System.Runtime.CompilerServices;

namespace Newtonsoft.Json
{
	[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
	public sealed class JsonPropertyAttribute : Attribute
	{
		internal NullValueHandling? nullable_0;

		internal DefaultValueHandling? nullable_1;

		internal ReferenceLoopHandling? nullable_2;

		internal ObjectCreationHandling? nullable_3;

		internal TypeNameHandling? nullable_4;

		internal bool? nullable_5;

		internal int? nullable_6;

		internal Required? nullable_7;

		internal bool? nullable_8;

		internal ReferenceLoopHandling? nullable_9;

		internal TypeNameHandling? nullable_10;

		[CompilerGenerated]
		private Type type_0;

		[CompilerGenerated]
		private string string_0;

		public Type ItemConverterType
		{
			[CompilerGenerated]
			get
			{
				return type_0;
			}
			[CompilerGenerated]
			set
			{
				type_0 = value;
			}
		}

		public NullValueHandling NullValueHandling
		{
			get
			{
				return nullable_0 ?? NullValueHandling.Include;
			}
			set
			{
				nullable_0 = value;
			}
		}

		public DefaultValueHandling DefaultValueHandling
		{
			get
			{
				return nullable_1 ?? DefaultValueHandling.Include;
			}
			set
			{
				nullable_1 = value;
			}
		}

		public ReferenceLoopHandling ReferenceLoopHandling
		{
			get
			{
				return nullable_2 ?? ReferenceLoopHandling.Error;
			}
			set
			{
				nullable_2 = value;
			}
		}

		public ObjectCreationHandling ObjectCreationHandling
		{
			get
			{
				return nullable_3 ?? ObjectCreationHandling.Auto;
			}
			set
			{
				nullable_3 = value;
			}
		}

		public TypeNameHandling TypeNameHandling
		{
			get
			{
				return nullable_4 ?? TypeNameHandling.None;
			}
			set
			{
				nullable_4 = value;
			}
		}

		public bool IsReference
		{
			get
			{
				return nullable_5 ?? false;
			}
			set
			{
				nullable_5 = value;
			}
		}

		public int Order
		{
			get
			{
				return nullable_6 ?? 0;
			}
			set
			{
				nullable_6 = value;
			}
		}

		public Required Required
		{
			get
			{
				return nullable_7 ?? Required.Default;
			}
			set
			{
				nullable_7 = value;
			}
		}

		public string PropertyName
		{
			[CompilerGenerated]
			get
			{
				return string_0;
			}
			[CompilerGenerated]
			set
			{
				string_0 = value;
			}
		}

		public ReferenceLoopHandling ItemReferenceLoopHandling
		{
			get
			{
				return nullable_9 ?? ReferenceLoopHandling.Error;
			}
			set
			{
				nullable_9 = value;
			}
		}

		public TypeNameHandling ItemTypeNameHandling
		{
			get
			{
				return nullable_10 ?? TypeNameHandling.None;
			}
			set
			{
				nullable_10 = value;
			}
		}

		public bool ItemIsReference
		{
			get
			{
				return nullable_8 ?? false;
			}
			set
			{
				nullable_8 = value;
			}
		}

		public JsonPropertyAttribute()
		{
		}

		public JsonPropertyAttribute(string propertyName)
		{
			PropertyName = propertyName;
		}
	}
}
